package com.ccc.scala.base11_generic

object Generic06 {
  def main(args: Array[String]): Unit = {
    // 上下文限定

    // 上下文限定是将泛型和隐式转换的结合产物，以下两者功能相同，
    // 使用上下文限定[A : Ordering]之后，方法内无法使用隐式参数名调用隐式参数，
    // 需要通过implicitly[Ordering[A]]获取隐式变量，
    // 如果此时无法查找到对应类型的隐式变量，会发生出错误。

    def f[A: Test](a: A) = println(a)

    implicit val test: Test[User] = new Test[User]

    f(new User)
  }

  class Test[T] {
  }

  class Parent {
  }

  class User extends Parent {
  }

  class SubUser extends User {
  }

}
